[toc]
Universal Links(通用链接)
相关文档:
一、Universal Links & scheme
Universal Links(通用链接),是iOS9推出的一项新功能。如果你的应用(app)支持通用链接(Universal Link)之后,iOS用户能够在点击网页的链接的时候无缝的重定向到已经安装的app,不需要额外的任何操作。如果没有安装对应的app,那么点击链接会使用Safari打开网页。
附:在iOS9以前,对于各种浏览器,Safari中唤醒app的需求,我们通常是只能使用scheme的方式。现在iOS9之后,我们多了一种方式。两种方式的区别是scheme能够支持我们跳转app的时候加入参数。
二、Universal Links的表现及测试
假设对于 com.dvlproad.Beyond 这个app,
dvlproad.com/app 是通用链接, dvlproad.com/mobile 不是通用链接。
1、在浏览器Safari地址栏中的表现
则我们先分别将这些链接粘贴到浏览器Safari的地址栏中,
1、浏览器地址栏为非通用链接时,没什么特别。
2、而浏览器地址栏为通用链接的时候,
①如果我们有安装`com.dvlproad.Beyond这个app,则会发现该页面下滑后,在顶部会多了个在应用中打开的操作,形如:
②如果我们没有安装com.dvlproad.Beyond
这个app,则没有多这栏打开。即使你的通用链接都配置正确了。
2、在非浏览器,如备用录app里的表现
我们会发现点击
1、备忘录中的链接为非通用链接时,点击链接没什么特别。
2、而备忘录中的链接为通用链接的时候,点击链接会直接跳转到我们的com.dvlproad.Beyond
这个app上。
三、Universal Links的实现
要让一个链接成为通用链接。需要
1、开启配置 Associated Domains
只有以该域名开头的链接,才可能是通用链接。
2、制作上传 apple-app-site-association
1、Associated Domains
1、进入苹果Apple Developer -> Member Center -> Certificates, Identifiers & Profiles – >Identifiers - >App IDs–>Edit 然后开启打钩 Associated Domains 后保存。
如果你使用Xcode的自动管理证书,可直接跳到第二步,即Xcode会在你打开Associated Domains时,自动帮你处理证书配置问题以及appIDs打开Associated Domains。
2、在项目中添加Associated Domains
/AssociatedDomains_Set1.png)
点击Associated Domains的+号填入applinks:后面是你的域名。
/AssociatedDomains_Set2.png)
及添加完后,只有以该域名dvlproad.com
开头的链接,才可能是通用链接。
附:有时候,上面的设置也会改使用二级域名,如applinks:app.dvlproad.com。
2、apple-app-site-association
App在安装的时候,iOS系统会去根据该app配置里填的那些Associated Domains
下,去这些域的根目录下,取apple-app-site-association文件。
我们创建apple-app-site-association文件,并上传也是为了让iOS系统通过Associated Domains
和apple-app-site-association
这个文件,一起知道你的哪些是链接是Universal Links,哪些不是Universal Links。
2.1、制作apple-app-site-association 文件
创建一个命名为apple-app-site-association文件,文件名必须为apple-app-site-association!!!(注意这个文件必须没有后缀名)
设apple-app-site-association
内容如下:
1 | { |
appID 是由你的Team ID+BundleID组成,如果你不知道你的Team ID是什么?进入苹果Apple Developer -> Member Center ->Membership->Team ID
paths 是一个字符串的数组,这里是你的应用支持的通用链接与不支持的链接,例如你使用的是/*,代表着只要是Associated Domains域名下的所有的链接都支持。如果你不支持某一个链接,在这个链接前面加NOT空格,举个例子
“paths”:[ “NOT /home/“, “/“ ]
如果这样写就是除了不支持/home下所有的链接,其他链接都支持。
2.2、上传apple-app-site-association 文件
把你刚才制作好的apple-app-site-association文件,放到1中Associated Domains所填写的域名dvlproad.com
的根目录下或者.well-known
下(要怕除问题,两个地方都放也行。)。
2.3、检测上传的apple-app-site-association 文件是否成功
①、通过浏览器访问https://xxx.com/apple-app-site-association
地址,看文件是否上传成功。
②、苹果有一个检测的接口 苹果测试入口 ,将你的域名放入测试口,点击TestURL即可。
2.4、上传apple-app-site-association 文件到dvlproad.github.io
的例子
为方便测试,我们域名使用dvlproad.github.io
这个。
1、apple-app-site-association
必须放置在域名的根目录或者 .well-known 目录下,
2、在本地测试跟路径是否有效。
方法:将apple-app-site-association
放置好后,我们执行hexo s
,则我们就能成功访问http://localhost:4000,进而http://localhost:4000/apple-app-site-association。
/UniversalLinks_test1.png)
3、本地可以后,就部署到服务器
测试部署成功与否,通过浏览器访问https://dvlproad.github.io/apple-app-site-association
1、优先本地部署测试,即 hexo s 后,通过浏览器访问:
http://localhost:4000/apple-app-site-association 如果可以下载则文件位置放置在根目录正确。
2、本地测试通过后,进行远程部署 hexo g 和 hexo d 测试,及通过浏览器访问:
https://dvlproad.github.io/apple-app-site-association
如果可以下载代表在1的基础上,远程部署也成功了。
如果无法访问/下载,而又确认部署完成了,那一般是部署了但还没同步到域名地址上的问题。建议等等或者再部署一下看看。
3、写一个通用链接并测试
为进一步了解知道哪些链接是通用链接,哪些不是。我们以上述例子进行说明。
则对于com.dvlproad.Beyond1
这个app,由于paths是[ "*" ]
,
即只要是dvlproad.com
开头的链接都是通用链接。
而对于com.dvlproad.Beyond2
这个app,由于paths是[ "app" ]
,
所以,只有以dvlproad.com/app
开头的链接才是通用链接。即形如 dvlproad.com/app/111、dvlproad.com/app/abc 等都是通用链接。
通用链接的测试方法,请按上面已经写玩的Universal Links的表现及测试进行测试,不再累述。
四、Universal Links的使用
在AppDelegate添加下面的方法处理Universal Links
1 | //TODO:后台进入前台/通用链接 |
当用Universal Links启动APP时就会调用上面的方法。
把我们设置好通用链接的URL放到备忘录中,长按URL会多出一条在“××××”中打开,当你点击时就会打开你的APP,并且在上面的方法中将URL传给你处理。
五、微信配Universal Links
微信SDK的最新版本openSDK1.8.6 开始,需要进行Universal Links配置。
1、分析微信配Universal Links的原因
回顾iOS9之前,假设一个页面在微信app内部打开,其要跳转到app,一般需要先跳转到浏览器,如Safari中,然后才能再进行scheme跳转到我们的应用。
而有了Universal Links后,现在你用微信打开的页面,跳转的时候,即可直接跳转到app中,不用再经过浏览器。
2、微信配Universal Links的操作
2.1、基本分享操作的支持
微信分享配置Universal Links的有两个地方。
1、微信开放平台 https://open.weixin.qq.com 上对应app的Universal Links配置
/UniversalLinks_wechat_Set1.png)
2、微信SDK使用时候的Universal Links配置。
如果上述两个值设置不一样,会导致在app中点击分享的时候,没法正常调起分享操作。错误信息如下:
我们知道Universal Links是用来做通用链接的。但要完成这一步的操作不需要我们去开Associated Domains
和上传apple-app-site-association
才能完成基本的分享操作了。
2.2、分享完微信能够正常返回
iOS 9系统策略更新,限制了http协议的访问,需要在“Info.plist”中将要使用的URL Schemes列为白名单,才可正常检查其他应用是否安装。
1 | <key>LSApplicationQueriesSchemes</key> |
2.3、可以在微信内部直接跳转到app
实现Universal Links的实现。即
1、开启配置 Associated Domains
2、制作上传 apple-app-site-association
上面已说明,请查看上面内容。